home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Fonts.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  8.8 KB  |  290 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Fonts.mod
  3.  
  4.      Contains:    Font Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE Fonts;
  23.  
  24. IMPORT SYSTEM, Types;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31.     systemFont*                    = 0;
  32.     applFont*                    = 1;
  33.     newYork*                        = 2;
  34.     geneva*                        = 3;
  35.     monaco*                        = 4;
  36.     venice*                        = 5;
  37.     london*                        = 6;
  38.     athens*                        = 7;
  39.     sanFran*                        = 8;
  40.     toronto*                        = 9;
  41.     cairo*                        = 11;
  42.     losAngeles*                    = 12;
  43.     times*                        = 20;
  44.     helvetica*                    = 21;
  45.     courier*                        = 22;
  46.     symbol*                        = 23;
  47.     mobile*                        = 24;
  48.     commandMark*                    = 17;
  49.     checkMark*                    = 18;
  50.     diamondMark*                    = 19;
  51.  
  52.     appleMark*                    = 20;
  53.     propFont*                    = 36864;
  54.     prpFntH*                        = 36865;
  55.     prpFntW*                        = 36866;
  56.     prpFntHW*                    = 36867;
  57.     fixedFont*                    = 45056;
  58.     fxdFntH*                        = 45057;
  59.     fxdFntW*                        = 45058;
  60.     fxdFntHW*                    = 45059;
  61.     fontWid*                        = 44208;
  62.  
  63.  
  64. TYPE
  65.     FMInput* = (*ΔΔPACKEDΔΔ*) RECORD
  66.         family*:                    INTEGER;
  67.         size*:                    INTEGER;
  68.         face*:                    Types.Style;
  69.         needBits*:                BOOLEAN;
  70.         device*:                    INTEGER;
  71.         numer*:                    Types.Point;
  72.         denom*:                    Types.Point;
  73.     END;
  74.  
  75.     FMOutput* = (*ΔΔPACKEDΔΔ*) RECORD
  76.         errNum*:                    INTEGER;
  77.         fontHandle*:                Types.Handle;
  78.         boldPixels*:                Types.UInt8;
  79.         italicPixels*:            Types.UInt8;
  80.         ulOffset*:                Types.UInt8;
  81.         ulShadow*:                Types.UInt8;
  82.         ulThick*:                Types.UInt8;
  83.         shadowPixels*:            Types.UInt8;
  84.         extra*:                    Types.SInt8;
  85.         ascent*:                    Types.UInt8;
  86.         descent*:                Types.UInt8;
  87.         widMax*:                    Types.UInt8;
  88.         leading*:                Types.SInt8;
  89.         curStyle*:                Types.SInt8;
  90.         numer*:                    Types.Point;
  91.         denom*:                    Types.Point;
  92.     END;
  93.  
  94.     FMOutPtr* = POINTER TO FMOutput;
  95.  
  96.     FontRec* = RECORD
  97.         fontType*:                INTEGER;                                (*font type*)
  98.         firstChar*:                INTEGER;                                (*ASCII code of first character*)
  99.         lastChar*:                INTEGER;                                (*ASCII code of last character*)
  100.         widMax*:                    INTEGER;                                (*maximum character width*)
  101.         kernMax*:                INTEGER;                                (*negative of maximum character kern*)
  102.         nDescent*:                INTEGER;                                (*negative of descent*)
  103.         fRectWidth*:                INTEGER;                                (*width of font rectangle*)
  104.         fRectHeight*:            INTEGER;                                (*height of font rectangle*)
  105.         owTLoc*:                    INTEGER;                                (*offset to offset/width table*)
  106.         ascent*:                    INTEGER;                                (*ascent*)
  107.         descent*:                INTEGER;                                (*descent*)
  108.         leading*:                INTEGER;                                (*leading*)
  109.         rowWords*:                INTEGER;                                (*row width of bit image / 2 *)
  110.     END;
  111.  
  112.     FMetricRec* = RECORD
  113.         ascent*:                    Types.Fixed;                                    (*base line to top*)
  114.         descent*:                Types.Fixed;                                    (*base line to bottom*)
  115.         leading*:                Types.Fixed;                                    (*leading between lines*)
  116.         widMax*:                    Types.Fixed;                                    (*maximum character width*)
  117.         wTabHandle*:                Types.Handle;                                    (*handle to font width table*)
  118.     END;
  119.  
  120.     FMetricRecPtr* = POINTER TO FMetricRec;
  121.     FMetricRecHandle* = HANDLE TO FMetricRec (*ΔΔ POINTER TO FMetricRecPtr*);
  122.  
  123.     WidEntry* = RECORD
  124.         widStyle*:                INTEGER;                                (*style entry applies to*)
  125.     END;
  126.  
  127.     WidTable* = RECORD
  128.         numWidths*:                INTEGER;                                (*number of entries - 1*)
  129.     END;
  130.  
  131.     AsscEntry* = RECORD
  132.         fontSize*:                INTEGER;
  133.         fontStyle*:                INTEGER;
  134.         fontID*:                    INTEGER;                                (*font resource AIFF.ID*)
  135.     END;
  136.  
  137.     FontAssoc* = RECORD
  138.         numAssoc*:                INTEGER;                                (*number of entries - 1*)
  139.     END;
  140.  
  141.     StyleTable* = RECORD
  142.         fontClass*:                INTEGER;
  143.         offset*:                    LONGINT;
  144.         reserved*:                LONGINT;
  145.         indexes*:                (*ΔΔPACKEDΔΔ*) ARRAY 48 (*ΔΔ[0..47]ΔΔ*) OF CHAR;
  146.     END;
  147.  
  148.     NameTable* = RECORD
  149.         stringCount*:            INTEGER;
  150.         baseFontName*:            Types.Str255;
  151.     END;
  152.  
  153.     KernPair* = RECORD
  154.         kernFirst*:                CHAR;                                    (*1st character of kerned pair*)
  155.         kernSecond*:                CHAR;                                    (*2nd character of kerned pair*)
  156.         kernWidth*:                INTEGER;                                (*kerning in 1pt fixed format*)
  157.     END;
  158.  
  159.     KernEntry* = RECORD
  160.         kernStyle*:                INTEGER;                                (*style the entry applies to*)
  161.         kernLength*:                INTEGER;                                (*length of this entry*)
  162.     END;
  163.  
  164.     KernTable* = RECORD
  165.         numKerns*:                INTEGER;                                (*number of kerning entries*)
  166.     END;
  167.  
  168.     WidthTable* = (*ΔΔPACKEDΔΔ*) RECORD
  169.         tabData*:                ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF Types.Fixed;                (*character widths*)
  170.         tabFont*:                Types.Handle;                                    (*font record used to build table*)
  171.         sExtra*:                    LONGINT;                                (*space extra used for table*)
  172.         style*:                    LONGINT;                                (*extra due to style*)
  173.         fID*:                    INTEGER;                                (*font family AIFF.ID*)
  174.         fSize*:                    INTEGER;                                (*font size request*)
  175.         face*:                    INTEGER;                                (*style (face) request*)
  176.         device*:                    INTEGER;                                (*device requested*)
  177.         inNumer*:                Types.Point;                                    (*scale factors requested*)
  178.         inDenom*:                Types.Point;                                    (*scale factors requested*)
  179.         aFID*:                    INTEGER;                                (*actual font family AIFF.ID for table*)
  180.         fHand*:                    Types.Handle;                                    (*family record used to build up table*)
  181.         usedFam*:                BOOLEAN;                                (*used fixed point family widths*)
  182.         aFace*:                    Types.UInt8;                                    (*actual face produced*)
  183.         vOutput*:                INTEGER;                                (*vertical scale output value*)
  184.         hOutput*:                INTEGER;                                (*horizontal scale output value*)
  185.         vFactor*:                INTEGER;                                (*vertical scale output value*)
  186.         hFactor*:                INTEGER;                                (*horizontal scale output value*)
  187.         aSize*:                    INTEGER;                                (*actual size of actual font used*)
  188.         tabSize*:                INTEGER;                                (*total size of table*)
  189.     END;
  190.  
  191.     FamRec* = RECORD
  192.         ffFlags*:                INTEGER;                                (*flags for family*)
  193.         ffFamID*:                INTEGER;                                (*family AIFF.ID number*)
  194.         ffFirstChar*:            INTEGER;                                (*ASCII code of 1st character*)
  195.         ffLastChar*:                INTEGER;                                (*ASCII code of last character*)
  196.         ffAscent*:                INTEGER;                                (*maximum ascent for 1pt font*)
  197.         ffDescent*:                INTEGER;                                (*maximum descent for 1pt font*)
  198.         ffLeading*:                INTEGER;                                (*maximum leading for 1pt font*)
  199.         ffWidMax*:                INTEGER;                                (*maximum widMax for 1pt font*)
  200.         ffWTabOff*:                LONGINT;                                (*offset to width table*)
  201.         ffKernOff*:                LONGINT;                                (*offset to kerning table*)
  202.         ffStylOff*:                LONGINT;                                (*offset to style mapping table*)
  203.         ffProperty*:                ARRAY 9 (*ΔΔ[0..8]ΔΔ*) OF INTEGER;                (*style property info*)
  204.         ffIntl*:                    ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF INTEGER;                (*for international use*)
  205.         ffVersion*:                INTEGER;                                (*version number*)
  206.     END;
  207.  
  208.  
  209. PROCEDURE InitFonts*;
  210.     (*$IF NOT GENERATINGCFM*)
  211.     INLINE PASCAL $A8FE;
  212.     (*$END*)
  213. PROCEDURE GetFontName*(familyID: INTEGER; VAR name: Types.Str255);
  214.     (*$IF NOT GENERATINGCFM*)
  215.     INLINE PASCAL $A8FF;
  216.     (*$END*)
  217. PROCEDURE GetFNum*(name: Types.ConstStr255Param; VAR familyID: INTEGER);
  218.     (*$IF NOT GENERATINGCFM*)
  219.     INLINE PASCAL $A900;
  220.     (*$END*)
  221. PROCEDURE RealFont*(fontNum: INTEGER; size: INTEGER): BOOLEAN;
  222.     (*$IF NOT GENERATINGCFM*)
  223.     INLINE PASCAL $A902;
  224.     (*$END*)
  225. PROCEDURE SetFontLock*(lockFlag: BOOLEAN);
  226.     (*$IF NOT GENERATINGCFM*)
  227.     INLINE PASCAL $A903;
  228.     (*$END*)
  229. PROCEDURE FMSwapFont*((*CONST*)VAR inRec: FMInput): FMOutPtr;
  230.     (*$IF NOT GENERATINGCFM*)
  231.     INLINE PASCAL $A901;
  232.     (*$END*)
  233. PROCEDURE SetFScaleDisable*(fscaleDisable: BOOLEAN);
  234.     (*$IF NOT GENERATINGCFM*)
  235.     INLINE PASCAL $A834;
  236.     (*$END*)
  237. PROCEDURE FontMetrics*(theMetrics: FMetricRecPtr);
  238.     (*$IF NOT GENERATINGCFM*)
  239.     INLINE PASCAL $A835;
  240.     (*$END*)
  241. PROCEDURE SetFractEnable*(fractEnable: BOOLEAN);
  242.     EXTERNAL PASCAL;
  243. PROCEDURE GetDefFontSize*(): INTEGER;
  244.     (*$IF NOT GENERATINGCFM*)
  245.     INLINE PASCAL $3EB8, $0BA8, $6604, $3EBC, $000C;
  246.     (*$END*)
  247. PROCEDURE IsOutline*(numer: Types.Point; denom: Types.Point): BOOLEAN;
  248.     (*$IF NOT GENERATINGCFM*)
  249.     INLINE PASCAL $7000, $A854;
  250.     (*$END*)
  251. PROCEDURE SetOutlinePreferred*(outlinePreferred: BOOLEAN);
  252.     (*$IF NOT GENERATINGCFM*)
  253.     INLINE PASCAL $7001, $A854;
  254.     (*$END*)
  255. PROCEDURE GetOutlinePreferred*(): BOOLEAN;
  256.     (*$IF NOT GENERATINGCFM*)
  257.     INLINE PASCAL $7009, $A854;
  258.     (*$END*)
  259. PROCEDURE OutlineMetrics*(byteCount: INTEGER; textPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; numer: Types.Point; denom: Types.Point; VAR yMax: INTEGER; VAR yMin: INTEGER; awArray: Types.(*ΔΔ Fixed*)Ptr; lsbArray: Types.(*ΔΔ Fixed*)Ptr; boundsArray: Types.RectPtr): Types.OSErr;
  260.     (*$IF NOT GENERATINGCFM*)
  261.     INLINE PASCAL $7008, $A854;
  262.     (*$END*)
  263. PROCEDURE SetPreserveGlyph*(preserveGlyph: BOOLEAN);
  264.     (*$IF NOT GENERATINGCFM*)
  265.     INLINE PASCAL $700A, $A854;
  266.     (*$END*)
  267. PROCEDURE GetPreserveGlyph*(): BOOLEAN;
  268.     (*$IF NOT GENERATINGCFM*)
  269.     INLINE PASCAL $700B, $A854;
  270.     (*$END*)
  271. PROCEDURE FlushFonts*(): Types.OSErr;
  272.     (*$IF NOT GENERATINGCFM*)
  273.     INLINE PASCAL $700C, $A854;
  274.     (*$END*)
  275. PROCEDURE GetSysFont*(): INTEGER;
  276.     (*$IF NOT CFMSYSTEMCALLS*)
  277.     INLINE PASCAL $3EB8, $0BA6;            (* MOVE.w $0BA6,(SP) *)
  278.     (*$END*)
  279.  
  280. PROCEDURE GetAppFont*(): INTEGER;
  281.     (*$IF NOT CFMSYSTEMCALLS*)
  282.     INLINE PASCAL $3EB8, $0984;            (* MOVE.w $0984,(SP) *)
  283.     (*$END*)
  284.  
  285.  
  286. (* $ALIGN RESET*)
  287. (* $POP*)
  288.  
  289.  END Fonts.
  290.